#pragma once

#include <memory>

#include "Element.h"

#include "Token.h"
#include <string>

class CHeadFile;

class CTypeGenerator
{

public:

    CTypeGenerator( 
            CHeadFile * InContext
            ,const std::vector<std::shared_ptr<CToken>>& Tokens);

    void Generate();

    bool bVirtual = false;
    bool bStatic = false;
    bool bConst = false;
    
    std::u8string Result; //type name without decorators, such as const, static, virtual
    std::u8string DecoratedResult; //type name with decorators
protected:
    CHeadFile * Context;

    std::vector<std::shared_ptr<CToken>> Tokens;

};